package com.zy.dp.template.example4;

public abstract class AbstractTemplate
{
	public final void templateMethod()
	{
		this.operation1();

		this.operation2();
		this.doPrimitiveOperation1();
		this.doPrimitiveOperation2();
		this.hookOperation();
	}

	private void operation1()
	{

	}

	protected final void operation2()
	{

	}

	protected final void commonOperation()
	{

	}

	public abstract void doPrimitiveOperation1();

	public abstract void doPrimitiveOperation2();

	public void hookOperation()
	{

	}

	protected abstract Object createOneObject();

}
